//package org.jeecg.modules.controller.wx;
//
//import com.chuai.ecshop.pojo.Order;
//import com.chuai.ecshop.service.OrderService;
//import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
//import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
//import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
//import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
//import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
//import com.github.binarywang.wxpay.exception.WxPayException;
//import com.github.binarywang.wxpay.service.WxPayService;
//import lombok.extern.slf4j.Slf4j;
//import me.chanjar.weixin.common.api.WxConsts;
//import me.chanjar.weixin.common.error.WxErrorException;
//import me.chanjar.weixin.mp.api.WxMpService;
//import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//import java.net.URLEncoder;
//
//@Controller
//@Slf4j
//public class WXMpController {
//
//    @Autowired
//    WxMpService wxMpService;
//
//    @Autowired
//    WxPayService wxPayService;
//
//    @Autowired
//    OrderService orderService;
//
//
//    /**
//     *
//     String baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?" +
//     "appid=xxxxxxxxxxx&" +
//     "redirect_uri=http%3a%2f%2fxxxxxxxxxxx%2fsell%2fwechat&" +
//     "response_type=code&scope=snsapi_userinfo&state=chuai#wechat_redirect";
//
//     * 1、引导用户进入授权页面同意授权，获取code
//     * @return
//     */
//    @RequestMapping("/wechat/authorize")
//    public String getWxMpCode(String returnUrl){
//        if(returnUrl!=null) {
//            returnUrl = URLEncoder.encode(returnUrl);
//        }
//        String baseUrl = wxMpService.oauth2buildAuthorizationUrl(
//                "http://www.chuai.com/sell/wechat",
//                WxConsts.OAuth2Scope.SNSAPI_USERINFO,
//                returnUrl);
//        log.info("baseUrl打印：{}",baseUrl);
//        return "redirect:"+baseUrl;
//    }
//
//    /**
//     * 获取用户信息 openid 、accessToken等
//     * @param code
//     * @param state
//     * @return
//     */
//    @RequestMapping("/wechat")
//    public String getUser(String code, String state){
//        WxMpOAuth2AccessToken accessToken = new WxMpOAuth2AccessToken();
//        try {
//            accessToken = wxMpService.oauth2getAccessToken(code);
//        } catch (WxErrorException e) {
//            e.printStackTrace();
//        }
//        String openId = accessToken.getOpenId();
//        log.info("授权成功："+openId);
//        return "redirect:"+state+"?openid="+openId;
//    }
//
//    /**
//     * 唤醒支付
//     * @param orderId
//     * @param openid
//     * @return
//     */
//    @RequestMapping("/pay/create")
//    public String parCreate(Model m , String orderId, String openid,String returnUrl){
//        log.info("进入pay/create方法。。。{}",wxPayService);
//        Order order = orderService.findOrderById(openid, orderId);
//        WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
//        orderRequest.setOpenid(openid);
//        orderRequest.setBody("腾讯充值中心-QQ会员充值");
//        orderRequest.setOutTradeNo(order.getOId());
//        orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(order.getOAccount().toString()));//元转成分
//        orderRequest.setSpbillCreateIp("127.0.0.1");
//        orderRequest.setNotifyUrl("http://www.chuai.com/sell/notify/order");
//        orderRequest.setTradeType("JSAPI");
//        try {
//            WxPayMpOrderResult wxPayMpOrderResult = wxPayService.createOrder(orderRequest);
//
//            m.addAttribute("wxPayMpOrderResult",wxPayMpOrderResult);
//            m.addAttribute("returnUrl",returnUrl);
//
//        } catch (WxPayException e) {
//            log.info("微信支付失败！订单号:{},原因:{}",orderId,e.getMessage());
//            e.printStackTrace();
//            return "fail";
//        }
//        return "payIndex";
//    }
//
//
//    @RequestMapping("/notify/order")
//    public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
//        log.info("进入回调通知方法。。。。。{}",xmlData);
//        final WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
//        // TODO 根据自己业务场景需要构造返回对象
//
//        return WxPayNotifyResponse.success("成功");
//    }
//}
